// 사용자 상태 열거형
export enum UserStatus {
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  SUSPENDED = 'SUSPENDED',
  DELETED = 'DELETED'
}

// 사용자 잔액 인터페이스
export interface UserBalance {
  balance: number;
  frozen: number;
  total: number;
}

// 사용자 통계 인터페이스
export interface UserStats {
  totalDeposits: number;
  totalWithdraws: number;
  referredUsersCount: number;
}

export interface UserStakingProgress {
  dailyDistributionCount: number;
  totalSlots: number;
  dailyRewardDistributed: number;
  currentDailyReward: number;
}

// 사용자 기본 정보 인터페이스
export interface User {
  id: number;
  idNumber: string;
  username: string | null;
  name: string;
  birthDateFirst6: string;
  withdrawalBank: string;
  withdrawalAccount: string;
  accountHolder: string;
  mobileCarrier: string;
  mobileNumber: string;
  entryCode: string;
  status: UserStatus;
  tier: string; // 用户等级
  referralCode: string | null;
  referredBy: number | null;
  createdAt: string;
  updatedAt: string;
  lastLoginAt: string | null;
  lastLoginIp: string | null; // 最后登录IP
  balance: UserBalance | null;
  stats: UserStats;
  stakingProgress: UserStakingProgress | null;
}

// 페이지네이션 파라미터 인터페이스
export interface PaginationParams {
  page: number;
  limit: number;
  total: number;
  totalPages: number;
}

// 사용자 목록 응답 인터페이스
export interface UserListResponse {
  users: User[];
  pagination: PaginationParams;
}

// 검색 파라미터 인터페이스
export interface UserSearchParams {
  page?: number;
  limit?: number;
  search?: string;
  status?: UserStatus | '';
  sortBy?: string;
  sortOrder?: 'asc' | 'desc';
}

// 충전 기록 인터페이스
export interface DepositRecord {
  id: number;
  userId: number;
  amount: number;
  status: string;
  createdAt: string;
  updatedAt: string;
}

// 출금 기록 인터페이스
export interface WithdrawRecord {
  id: number;
  userId: number;
  amount: number;
  status: string;
  createdAt: string;
  updatedAt: string;
}

// 사용자 상세 인터페이스
export interface UserDetail extends User {
  recentDeposits: DepositRecord[];
  recentWithdraws: WithdrawRecord[];
  referredUsers: Array<{
    id: number;
    name: string;
    createdAt: string;
  }>;
  referrer: {
    id: number;
    name: string;
    referralCode: string;
  } | null;
}

// 持有币信息接口
export interface UserCoins {
  krw: {
    balance: number;
    frozen: number;
    total: number;
  };
  staking: {
    stakedAmount: number; // 质押本金
    lockedAmount: number; // 锁仓金额（推荐奖励）
    totalRewardsNear: number; // 累计收益
    dailyRewardRate: number; // 日收益率
    lastSettlementDate: string | null; // 最后结算日期
  } | null;
}

// 交易记录接口
export interface UserTransactions {
  deposits: DepositRecord[];
  withdraws: WithdrawRecord[];
  pagination: PaginationParams | null;
}
